Mechanism for work assignment in a graph-based contact center

ABSTRACT

A graph database is described for use in connection with a contact center. The graph database includes a plurality of nodes and relationships that describe the operations, entities, personnel, and attributes in the contact center. Also described is the operation of a work assignment engine that leverages the graph database to make intelligent and flexible work assignment decisions.

FIELD OF THE DISCLOSURE

The present disclosure is generally directed toward communications andmore specifically toward contact centers.

BACKGROUND

Contact centers originally developed as an analogy to a customer serviceline. In particular, queue theory has dominated the development ofcontact centers to date.

Within the last several years, however, significant advances in contactcenter architecture have been made and movement away from a traditionalwork/agent queue has developed. One example of such a contact center isdescribed in U.S. Pat. No. 8,619,968, the entire contents of which arehereby incorporated herein by reference. This implementation of thequeueless contact center represented a brand new way of thinking aboutcontact centers and how they should be constructed. Through thedevelopment of the queueless contact center, some obstacles have beenidentified and, in most situations, overcome. In general, there aresignificant advantages to implementing a queueless contact center.

At its core, however, the queueless contact center is still dependentupon a large number of discrete modules and systems interconnecting andcommunicating with one another. Specifically, the work assignment engineis separate from the Customer Relationship Management (CRM) system,which are both separate from Work Force Management (WFM) systems. Thework assignment engine is also separate from, Work-Flow (front andback-office), Voice Portal and other interactive voice response (IVR)systems as well as additional reporting and forecasting systems.

A primary problem with existing contact center solutions is that they donot provide a clean or easy way to have the above-mentioned contactcenter components interoperate. Another problem with the movement awayfrom traditional queue-based contact centers is that the rigid structureof the queue naturally limited the type of data that was consideredinteresting for purposes of work assignment, reporting, etc. Thus,without the existence of a queue, the amount of data associated withwork items and agents (e.g., attributes) has expanded exponentially.Current contact center databases do not easily support the creation ofattribute sets (e.g., a set of attributes describing a particular workitem or agent). In fact, the contact center database has been manuallyupdated to support each new attribute set or possible attribute set. Asa single attribute is added to the contact center, the possible numberof attribute sets multiplies. This data expansion severely pushes thelimits of current database structures used in contact centers.

What is needed is a more comprehensive solution for developing a contactcenter, whether queueless or queue-based. In particular, a completelynew model is needed to enable the next quantum leap in contact centerdevelopment.

SUMMARY

It is, therefore, one aspect of the present disclosure to introduce anew model for use in a contact center. Specifically, embodiments of thepresent disclosure propose the utilization of a graph database toreplace the traditional hierarchical databases used in contact centersto date, whether queue-based or queueless.

It is one aspect of the present disclosure to enable a contact center toshare a common data structure that better describes the state of thecontact center and components therein and extends easily to new anddifferent concepts like goal management, process control, analytics, andcontext-rich work assignment. The new model proposed herein is a graphand a graph-based framework (e.g., a graph database) with scalable,durable and cost-effective modeling of the entire contact center isproposed. This model allows easy integration of work assignment,administration, reporting, process control, and media management withouttranslation to component-specific models. Not only does this make theinformation from the graph database easily available to every contactcenter subsystem, but the graph database is highly scalable and capableof supporting small, medium, and large contact center installations withease.

In accordance with at least some embodiments, a graph database describeseverything stored therein using nodes and relationships. The nodes canbe anything of interest, including but not limited to an attribute(e.g., characteristic or feature of a resource, work item, etc.), aresource itself, a work item itself, a result, a measure, an interactionor conference that occurred between nodes, etc.

One aspect of the graph database is to support an attribute tree. Anattribute is a character, quality, processing requirement, and/orfeature of an entity. Examples of attributes might include languagepreference, age, product information (e.g., SALE-FURNITURE), and otherdemographics. Attributes are commonly considered for routing decisionsby a work assignment engine to best meet goals and/or desired metricsfor a contact center. Current systems often require grouping theattributes into sets for matching and reporting. The present disclosure,on the other hand, will use the attribute tree directly for matching,thereby eliminating the attribute set and allowing the naturally definedrelationships to provide simple proximity determination.

As an example, by using an attribute tree during work assignment, arequest for ENGLISH by a work item could be satisfied by ENGLISH-UK orENGLISH-US or a request for ENGLISH-UK can be handled by ENGLISH-US(e.g., because the graph database describes the relationship, both UKand US English are children of ENGLISH) but at a slight cost or isnearly the same or is better than other choices.

Embodiments of the present disclosure allow the new framework to move upand down the graph for close matches, so the relationship between nodesis important. Routing decisions may be made based on closeness to atarget attribute within the attribute tree. Reporting and administrationcan use the tree to “roll-up” and “drill-down.”

Another aspect of the present disclosure is to utilize a weightingsystem to determine costs for moving up and down the tree, and theseweights can be considered during work assignment decisions. Adjustmentscan be made at any level of the attribute tree, using the mechanism tomove up and down the graph. The proposed disclosure removes the need formultiple attribute sets and attribute set exclusion. Reporting alsobecomes extremely simple. A natural roll up and drill down graph isprovided.

In an example, if a work item comes in that requires attributes ofEnglish, Sales, Existing Customer, CableTV, and Premium, can Agent 2 doany or all of it? Can Agent 3 do it now rather than the system waitingfor Agent 2, even though Agent 3 normally only handles Regular and notPremium customers? If the only option for ten minutes is Agent 4 whoonly speaks Spanish, is that a viable option? At what cost? Within thegraph, closeness would be considered as a weighted goal as well asrelative closeness with branching, depending on the cost. Decisionscould be made for best-match, closest-match, andbetter-than-having-it-abandon match.

Extending the graph model enables adding new nodes and relationships,which is uncomplicated. There is no prior defined schema. The graph canrepresent static relationships (e.g., attributes) and dynamicrelationships like call history, agent preferences, process steps,goals, costs, benefits and state. By walking the graph, the system cancompute the costs and the benefits of decisions, not only in workassignment but in process control and work flow. By using a common datastructure (e.g., a graph database), the same principles that are usedfor work assignment can be extended into other decision areas, allowingfor a common work assignment decision engine to be used and furtherreducing the complexity and redundancy of the contact center.

In some embodiments, a graph database is used for the domain model. Itrepresents the entire system, real-time, historical, matching,deployment, workflow, and administration. This database consists ofnodes (e.g., vertices) connected together by relationships (e.g.,edges). In some embodiments, each node can have properties and eachrelationship can have properties. The properties can have a name likehandled and have a time-stamp and duration like @T9,1 to indicate whenthey are placed on the relationship/node. This mechanism provides asimple way to time-order the events (e.g., changes to properties andrelationships) for analysis.

An initial implementation of the graph can be very simple. There can bethree classes that form the basic graph. In some embodiments, both nodeand relationship can derive from the element class that has the propertyset. When connecting instances of these classes, the relationshipbetween two entities (e.g., nodes) can be added to both the “To” and“From” node relationship collections. In this way, the graph can bewalked in either direction. For efficiency, name of nodes and propertynames can be stored as integers and in a common symbol table. Having asymbol table improves efficiency of search and lookup by name, but doesrequire the symbol table be instantiated across computational instancesin a High Availability (HA) grid.

In some embodiments, a single reporting system can report on all of thediscrete and different traditional components, including informationfrom the IVR, the work assignment engine, CRM, WFM, media control,forecasting, workflow, etc. based on the new graph model capabilities.

In some embodiments, every piece of a workflow requests a workassignment decision to add a resource to a node during processing. Wherework assignment was traditionally used for resource selection, now allparts of the graph are included in the workflow. Each node in theworkflow graph can include a resource, and tasks of workflow arecompleted by the resource.

In some embodiments, the relationships of the graph database haveproperties. If these relationships were modeled in a relational databaseas another table with foreign keys to the “node tables”, then everyunique set of properties attached to a relationship would requirecreation of another table and modification of the relational database toobject models used by the software. This can get extremely expensive andcomplex when there are thousands of property sets.

A benefit obtained by using a graph database instead of a relationaldatabase is expandability. Creating a new relationship in a graphdatabase, as opposed to a relational database, is simple and fast. In arelational database, the schema must be changed (new tables if newrelationship properties), new keys added, and the data migrated.

A useful value of a graph database for a contact center is that theworkflow model, the historical, the real-time and the work-assignmentmodels can be unified without having to do conversions to and from aRDB. This simplifies implementation, maintenance, and improvesrobustness. Another value here is that the core components of thecontact center (e.g., Work-Flow, Reporting, Work-Assignment and Control)can work directly on the model in memory. This makes scripting an orderof magnitude simpler to implement since there is no database managementrequired.

For example, to add a new relationship is simply an “Add relationshipwith properties” operation. In the current scripting world, thisrequires coordinating the modification with a relational database changethen adding the new tables and adding keys to the nodes being connected.It gets even worse if the relationship spans many node types (a nodetype would be represented by a table, e.g., a contact), since each tablewould have to be modified to have keys to the other nodes that can be onthe other end. There are ways to do this generically, but they suffer byrequiring complex joins to do even simple queries.

Another aspect of the present disclosure is to provide a mechanism forreporting on multi-dimensional conflicting metrics to provide a visualperformance model. The goal is to provide a region-based color-codedmapping of measures as a single, visual output.

Another aspect of the present disclosure is to allow multiple metrics tobe modeled into nine regions (or potentially into 27 regions in a 3-Dmap), where one color represents over-served, another color representsok, another color represents marginal, and another color represents aserious problem. If a region is red, for example, that may indicate thatboth (in a two-dimensional map) or all (in a three-dimensional map)measures are in trouble. Ranges/thresholds (e.g., 20-40 seconds forabandonment) may be set by an administrator for each of the metricsrepresented as well as for groups and aggregates of metrics. The metricscan additionally be collected for reporting and documentation purposes.

The display metric chart may be divided into nine regions based on theconflicting metrics, and each of the regions can be mapped to an action.The administrator can build an algorithmic set (20-30 good algorithms)designed to change the contact center behavior based on the state of theregions.

In a non-limiting example, if service level is Measure A and abandonrate is Measure B, and the region where the two converge goes red, thesystem may automatically bring in reserve agents. Each region would bemapped to manage the relationships based on a simple model, with mappingeach to the impact of what changes. Another example of a conflictingpair might be money/cost with a region to characterize the metric pair.The display can also indicate when many metrics are affected through thecolor illustration. Corrective actions may also be displayed whenautomatic actions are taken and alerts may be sent to agents, groups,and administrators. In addition, the regional map may include anidentification of complementary metrics and conflicting metrics, or onlycomplementary metrics, each with algorithms to change contact centerbehavior based on the status of the regions.

It is another aspect of the present disclosure to provide a mechanismfor setting parameters and fine-tuning goals in a contact center. Thegoal is to provide a slider for each goal in the user interface thatgives a simple mechanism to modify goals at a macro level, even goalsthat contain multiple measures.

Such a feature provides the administrator with the ability to makemacro-level changes for goals in a new user interface. The slider bandsmay be moved back and forth to make adjustments (minor and major). Theseare the levers used to tune the behavior of the contact center.

In a non-limiting example, four sliders are provided to theadministrator to adjust goals with multiple metrics: (a) Sales/FirstTime: 0-2% AB, 95-100% in 20 sec. SL; (b) Sales/Existing: 0-5% AB,80-100% in 30 sec. SL; (c) Disconnect+Internet: 1-2% AB, 95-100% in 20sec. SL; and (d) Trouble: 5-10% AB, 60-90% in 60 sec. SL

In an additional embodiment, the administrator might be providedadditional and/or different sliders to change critical measures likeservice level objective (SLO). Alternatively or additionally, changes inone or more goals may automatically change the slider position of othergoals based on the relationships between the goals. In a non-limitingexample, if Goal A is adjusted to a level where additional resourceswill be moved to cover the change, resources may also be affected forGoal B. Goal B may have fewer resources since the resources are nowbeing used to support Goal A. Goal B's slider can automatically move upor down when Goal A is adjusted so that each goal is still within rangeof how it is expected to actually perform. Based on the dependencies andrelationships between the goals, changing one goal may not affect othergoals, may change one other goal, or may change multiple goals, whereeach affected goal may move a little or display significant movement.

It is another aspect of the present disclosure to provide a goal modelthat defines a tree, nodes, and relationships capable of handlingcomplex queries to manage multiple administrable goals with associatedmetrics and targets.

A goal is a motivation which can be abstract or concrete, like meet mycontract or 10% sales increase. For each goal, metric groups can beestablished to indicate goal achievement. Measures may be used toindicate results relative to goals (e.g., how to compute, variables,cost, benefit), including a target range for each metric and/or metricgroup. A hierarchy may be established which can be used to drive theoperation of the primary components of the contact center (primarycomponents: work assignment, administration, staffing, reporting,control systems, endpoints, IVR, voice portal, email system, socialmedia systems (orchestration), collaboration tools (e.g., conferencingutilities, media sharing tools), etc.). The design works from the topdown, including goals desired, targets desired, metrics needed, and dataneeded. This can be customized in implementation based on datacollected, metrics computed, targets evaluated, and goals impacted.

As a non-limiting example, an administrator may desire to achieve aspecified abandon rate (AR). To drive toward the specified AR, theadministrator creates a goal, setting a desired AR range for eachservice class where attributes are used to determine the serviceclasses. Specific work/resource policies can be included, if needed. Thework assignment engine checks all possible routing options against ascoring function to drive the operating AR to the desired range. Thework assignment engine makes proper trade-offs among different serviceclasses based on a user-specified priority.

Thereafter, the administrator sets targets. For instance, the followingtargets may be specified:

% Abandon Targets

-   -   Sales/First Time: 0-2%    -   Sales/Existing: 0-5%    -   Support/Trouble: 5-10%    -   Others: 0-20%

Third, the administrator defines what metrics and data are needed. TheAR count can be flexibly fine-tuned/customized to meet the specificneeds of the contact center. Priorities are determined for each targetgroup. The highest priority group or groups are selected and the task ortasks that are most likely to abandon are chosen.

By serving a task in an “under target” group, the administrator canimprove (move) the % abandon into target range. By not serving an “overtarget” group, the administrator can push the % abandon back into targetrange. Within the reporting structure, the AR is successfully driventowards the target.

In another non-limiting example, the administrator may desire to setgoals for AR and service level (SL). Accordingly, the administrator setsa desired range of SL and AR for each attribute group. Attributes areused to determine matches. The mechanism checks all possible routingoptions against a scoring function to drive the operating SL and ARsimultaneously to the desired range and makes proper trade-offs amongdifferent groups based on the administrator-specified priority. Forinstance, the following goals may be defined:

Goals Sales/First Time 0-2% AB (serve fast as possible) 95-100% in 20sec. SL Sales/Existing 0-5% AB (willing to let them wait since don'thave any 80-100% in 30 sec. SL special offers) Disconnect + Internet1-2% AB (want to offer a promotion to keep customer) 95-100% in 20 sec.SL Trouble 5-10% AB (don't over-serve) 60-90% in 60 sec. SL Others10-20% AB (historically not important to business) 70-95% in 120 sec. SL

Insights gained from such goals include the ability to determine thedistributions among calls for different products, the ability to drilldown through activities like wait time, the ability to determineresolution across resources to identify training opportunities, and theability to find relationships between AB/SL and a customer satisfactionscore. Multiple goals can successfully be driven towards a regionaltarget.

It is another aspect of the present disclosure to provide a workflowthat supports temporal goals and defines a flexible framework forprocess metrics. Specifically, there are many aspects to operations in acontact center and it would be advantageous to have a single system anda single workflow process as a source of events that sends commands tocontrollers for execution. The proposed system gathers events fromcontrollers and uses the workflow to orchestrate commands. The commandsuse scripts associated with the workflow for detailed operations.

Workflow nodes have some basic properties that define process-basedmetrics, including how many have been processed since the start, howmany are active now, and what is the last relationship that completedthis task. An example of a workflow task node might be contact voiceIVR. An example of a decision node might be account status. Find bestagent might have properties including count-processed, sum duration,count in-process, and last relationship. Each of the workflow elementscan be used to recreate a customer experience and to create new andfine-tuned metrics.

In a non-limiting example, a workflow may be used to count the number ofabandons. The count may include abandons at each stage, includingcontact IVR, account status, find best agent, agent welcome, etc. If anadministrator only wants a metric that counts find best agent and agentwelcome abandons, the administrator can fine-tune the reporting sinceall of the elements are in one system. The source events for abandoncounting is defined by looking at the workflow and defining which tasksare considered for abandon.

The proposed workflow provides flexibility, which is completely definedby the contact center administrator rather than a predefined state modelin one or more databases. The workflow provides structure and the sourceof events rather than a rigid system that writes code to get an event orto query to see if the event exists.

It is yet another aspect of the present disclosure to provide amechanism for integrating unstructured data into a graph-based contactcenter where the relationships are defined during the recording ofactual associations between nodes in the graph database. In thegraph-based contact center, there is no requirement for a prebuilt or apriori defined schema. In the graph database, nodes get createdautomatically based on unstructured data that comes into the contactcenter. The model includes basic nodes and relationships that expand asnew categories and values come into the contact center and are added tothe model. Attributes for agents and customers can be organized andnodes and relationships can be created based on agent notes/feedback,information from agent texts, keywords, tagging, and topics. Each ofthese can be translated into relationships and nodes, which providesimmediate access and efficiency for work assignment, IVR, and reportingfor all data.

The nodes connected by the relationships provide much richerconnectivity that can be derived by pattern recognition because there isno existing pattern to match. The graph itself connects the datatogether, unlike a schema or a common structured/unstructured store. Allof the data is stored in the graph database, and all of the data can bequeried in very complex ways to derive causal behavior and influencedomain. Discovery of concepts and mechanisms that are hidden becomepossible based on “anti-patterns” that cause deviation from what isexpected.

The proposed solution solves problems of the prior art by defining asystem of metrics in a graph-based contact center related by a graph togoals and thresholds. The relationships are implicit in the model, sothe communication system doesn't have to analyze the data to find therelationships.

Other relationships that are previously unknown and/or undiscovered canbe discovered and queried by following the data source relationships.The graph can be used to find the unexpected or hidden relationshipsthat are two or more (even 10) relationships away from what is known,similar to when the friends of friends of friends buy a product based onFacebook posts.

The relationship is discoverable by simply walking the nodes andrelationships of the graph. From purchase information, the communicationsystem can infer an expected behavior and then measure that expectedbehavior when the system changes. By knowing what has changed (assumingtemporal change), the communication system can derive the relationshipof the metrics that were used to make the changes and any relationshipsto the metrics previously measured. These two metrics can then berelated in the graph by properties and or symbolic formulas (alsoproperties).

In a non-limiting learning scenario, the following steps occur:

(1) A call comes in from customer Mary with associated attributes. Marycalls in to obtain order status.

(2) A Work Assignment Engine assigns the call to agent Ted. Ted resolvesthe issue by providing status.

(3) All attributes from the caller, the agent, the conference, and thepositive outcome are fed into a learner.

(4) The learner updates rules based on the results of the interaction.

The learning process is what people call online machine learning, wherethe learner is operable to learn from one instance at a time. Based onexperiential learning, the leaner can predict the probability of apositive outcome. In the example, the goal is for agent Ted to resolvethe issue. When a work item comes in, the work assignment engine canconsider all possible matches and pick a match that has the highestprobability for the conference to reach a resolution node (e.g., aparticular type of node in the graph database) based on previousresolutions and on all parameters and attributes of the interactions.

The term “automatic” and variations thereof, as used herein, refers toany process or operation done without material human input when theprocess or operation is performed. However, a process or operation canbe automatic, even though performance of the process or operation usesmaterial or immaterial human input, if the input is received beforeperformance of the process or operation. Human input is deemed to bematerial if such input influences how the process or operation will beperformed. Human input that consents to the performance of the processor operation is not deemed to be “material”.

The term “computer-readable medium” as used herein refers to anytangible storage that participates in providing instructions to aprocessor for execution. Such a medium may take many forms, includingbut not limited to, non-volatile media, volatile media, and transmissionmedia. Non-volatile media includes, for example, NVRAM, or magnetic oroptical disks. Volatile media includes dynamic memory, such as mainmemory. Common forms of computer-readable media include, for example, afloppy disk, a flexible disk, hard disk, magnetic tape, or any othermagnetic medium, magneto-optical medium, a CD-ROM, any other opticalmedium, punch cards, paper tape, any other physical medium with patternsof holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, a solid state mediumlike a memory card, any other memory chip or cartridge, or any othermedium from which a computer can read. When the computer-readable mediais configured as a database, it is to be understood that the databasemay be a graph database as described herein. Accordingly, the disclosureis considered to include a tangible storage medium and priorart-recognized equivalents and successor media, in which the softwareimplementations of the present disclosure are stored.

The terms “determine”, “calculate”, and “compute,” and variationsthereof, as used herein, are used interchangeably and include any typeof methodology, process, mathematical operation or technique.

The term “module” as used herein refers to any known or later developedhardware, software, firmware, artificial intelligence, fuzzy logic, orcombination of hardware and software that is capable of performing thefunctionality associated with that element. Also, while the disclosureis described in terms of exemplary embodiments, it should be appreciatedthat individual aspects of the disclosure can be separately claimed.

BRIEF DESCRIPTION OF THE DRAWINGS

The present disclosure is described in conjunction with the appendedfigures:

FIG. 1 is a block diagram of a communication system in accordance withembodiments of the present disclosure;

FIG. 2 is a block diagram depicting a graph database in accordance withembodiments of the present disclosure;

FIG. 3 is a block diagram depicting components of a work assignmentengine in accordance with embodiments of the present disclosure;

FIG. 4 is a block diagram depicting a first workflow in accordance withembodiments of the present disclosure;

FIG. 5 is a block diagram depicting a workflow integrated into a graphdatabase in accordance with embodiments of the present disclosure;

FIG. 6A is a block diagram depicting a graph database where a workflowis left uncompleted and the work item associated therewith is notresolved in accordance with embodiments of the present disclosure;

FIG. 6B is a block diagram depicting a graph database where a workflowis completed and the work item associated therewith is resolved inaccordance with embodiments of the present disclosure;

FIG. 7 is a flow chart depicting a method of reporting source ofabandons in accordance with embodiments of the present disclosure;

FIG. 8 is a flow chart depicting a method of reporting source of averagespeed of answer in accordance with embodiments of the presentdisclosure;

FIG. 9 is a flow chart depicting a method of reporting source of servicelevel in accordance with embodiments of the present disclosure;

FIG. 10 is a block diagram depicting a multi-contact work item in agraph database in accordance with embodiments of the present disclosure;

FIG. 11 is a flow diagram depicting a method of optimizing goals inaccordance with embodiments of the present disclosure;

FIG. 12 is a block diagram depicting an attribute tree in accordancewith embodiments of the present disclosure;

FIG. 13 is a flow diagram depicting a first work assignment method inaccordance with embodiments of the present disclosure;

FIG. 14A is a flow diagram depicting a second work assignment method inaccordance with embodiments of the present disclosure;

FIG. 14B is a user interface depicting the status of multiple objectivesin accordance with embodiments of the present disclosure;

FIG. 15A is a block diagram showing a method of traversing an attributetree in connection with making a work assignment decision in accordancewith embodiments of the present disclosure;

FIG. 15B is a block diagram depicting an agent's particular relationshipwith an attribute tree in accordance with embodiments of the presentdisclosure;

FIG. 16A is a first graph representation of multiple contacts and workitems in a contact center in accordance with embodiments of the presentdisclosure; and

FIG. 16B is a second graph representation of multiple contacts and workitems in a contact center in accordance with embodiments of the presentdisclosure.

DETAILED DESCRIPTION

The ensuing description provides embodiments only, and is not intendedto limit the scope, applicability, or configuration of the claims.Rather, the ensuing description will provide those skilled in the artwith an enabling description for implementing the embodiments. It beingunderstood that various changes may be made in the function andarrangement of elements without departing from the spirit and scope ofthe appended claims.

FIG. 1 shows an illustrative embodiment of a communication system 100 inaccordance with at least some embodiments of the present disclosure. Thecommunication system 100 may be a distributed system and, in someembodiments, comprises a communication network 104 connecting componentsof a contact center 102 to one or more customer communication devices108.

In accordance with at least some embodiments of the present disclosure,the communication network 104 may comprise any type of knowncommunication medium or collection of communication media and may useany type of protocols to transport messages between endpoints. Thecommunication network 104 may include wired and/or wirelesscommunication technologies. The Internet is an example of thecommunication network 104 that constitutes and Internet Protocol (IP)network consisting of many computers, computing networks, and othercommunication devices located all over the world, which are connectedthrough many telephone systems and other means. Other examples of thecommunication network 104 include, without limitation, a standard PlainOld Telephone System (POTS), an Integrated Services Digital Network(ISDN), the Public Switched Telephone Network (PSTN), a Local AreaNetwork (LAN), a Wide Area Network (WAN), a Session Initiation Protocol(SIP) network, a Voice over IP (VoIP) network, a cellular network, andany other type of packet-switched or circuit-switched network known inthe art. In addition, it can be appreciated that the communicationnetwork 104 need not be limited to any one network type, and instead maybe comprised of a number of different networks and/or network types. Asone example, embodiments of the present disclosure may be utilized toincrease the efficiency of a grid-based contact center. Examples of agrid-based contact center are more fully described in U.S. patentapplication Ser. No. 12/469,523 to Steiner, the entire contents of whichare hereby incorporated herein by reference. Moreover, the communicationnetwork 104 may comprise a number of different communication media suchas coaxial cable, copper cable/wire, fiber-optic cable, antennas fortransmitting/receiving wireless messages, and combinations thereof.

The communication devices 108 may correspond to customer communicationdevices. In accordance with at least some embodiments of the presentdisclosure, a customer may utilize their communication device 108 toinitiate a work item, which is generally a request for a processingresource 112. Exemplary work items include, but are not limited to, acontact directed toward and received at a contact center, a web pagerequest directed toward and received at a server farm (e.g., collectionof servers), a media request, an application request (e.g., a requestfor application resources location on a remote application server, suchas a SIP application server), and the like. The work item may be in theform of a message or collection of messages transmitted over thecommunication network 104. For example, the work item may be transmittedas a telephone call, a packet or collection of packets (e.g., IP packetstransmitted over an IP network), an email message, an Instant Message,an SMS message, a fax, and combinations thereof. In some embodiments,the communication may not necessarily be directed at the work assignmentmechanism 116, but rather may be on some other server in thecommunication network 104 where it is harvested by the work assignmentmechanism 116, which generates a work item for the harvestedcommunication. An example of such a harvested communication includes asocial media communication that is harvested by the work assignmentmechanism 116 from a social media network or server. Exemplaryarchitectures for harvesting social media communications and generatingwork items based thereon are described in U.S. patent application Ser.Nos. 12/784,369, 12/706,942, and 12/707,277, filed Mar. 20, 1010, Feb.17, 2010, and Feb. 17, 2010, respectively, each of which are herebyincorporated herein by reference in their entirety.

The format of the work item may depend upon the capabilities of thecommunication device 108 and the format of the communication. Inparticular, work items are logical representations within a contactcenter of work to be performed in connection with servicing acommunication received at the contact center (and more specifically thework assignment mechanism 116). The communication may be received andmaintained at the work assignment mechanism 116, a switch or serverconnected to the work assignment mechanism 116, or the like until aresource 112 is assigned to the work item representing thatcommunication at which point the work assignment mechanism 116 passesthe work item to a routing engine 128 to connect the communicationdevice 108 which initiated the communication with the assigned resource112.

Although the routing engine 128 is depicted as being separate from thework assignment mechanism 116, the routing engine 128 may beincorporated into the work assignment mechanism 116 or its functionalitymay be executed by the work assignment engine 120.

In accordance with at least some embodiments of the present disclosure,the communication devices 108 may comprise any type of knowncommunication equipment or collection of communication equipment.Examples of a suitable communication device 108 include, but are notlimited to, a personal computer, laptop, Personal Digital Assistant(PDA), cellular phone, smart phone, telephone, or combinations thereof.In general each communication device 108 may be adapted to supportvideo, audio, text, and/or data communications with other communicationdevices 108 as well as the processing resources 112. The type of mediumused by the communication device 108 to communicate with othercommunication devices 108 or processing resources 112 may depend uponthe communication applications available on the communication device108.

In accordance with at least some embodiments of the present disclosure,the work item is sent toward a collection of processing resources 112via the combined efforts of the work assignment mechanism 116 androuting engine 128. The resources 112 can either be completely automatedresources (e.g., processors, servers, or the like), human resourcesutilizing communication devices (e.g., human agents utilizing acomputer, telephone, laptop, etc.), or any other resource known to beused in contact centers. In other embodiments, the work assignmentmechanism 116 may assign a work item to an IVR 144, a voice portal 140,or some other component of the contact center 102 prior to orsimultaneous with assigning the work item to a human resource 112 (e.g.,contact center agent). As will be discussed in further detail herein,the components of the contact center 102 may be configured to workcollectively to resolve a work item and a workflow may be implemented bythe work assignment mechanism 116 to ensure that such resolution isobtained with customer satisfaction.

In some embodiments the components of the contact center 102 may beowned and operated by a common entity. In some embodiments, everycomponent of the contact center 102 may be administered by a singleentity; however, in other embodiments, different components of thecontact center 102 may be administered by different entities. Forinstance, some resources 102 may be managed by the entity that managesthe work assignment mechanism 116 (e.g., internal resources 112), andother resources 112 may be managed by entities other than the entitythat manages the work assignment mechanism 116 (e.g., externalresources). The utilization of external resources 112 may be desirableduring periods of work surplus—when there is too much work volume forthe internal resources 112 to properly process the work items.

In some embodiments, the work assignment mechanism 116 comprises a workassignment engine 120 which enables the work assignment mechanism 116 tomake intelligent routing decisions for work items. In some embodiments,the work assignment engine 120 is configured to administer and make workassignment decisions in a queueless contact center, as is described inU.S. patent application Ser. No. 12/882,950, the entire contents ofwhich are hereby incorporated herein by reference. In other embodiments,the work assignment engine 120 may be configured to execute workassignment decisions in a traditional queue-based (or skill-based)contact center.

More specifically, the work assignment engine 120 can determine which ofthe plurality of processing resources 112 is qualified and/or eligibleto receive the work item and further determine which of the plurality ofprocessing resources 112 is best suited to handle the processing needsof the work item. In situations of work item surplus, the workassignment engine 120 can also make the opposite determination (i.e.,determine optimal assignment of a work item resource to a resource). Insome embodiments, the work assignment engine 120 is configured toachieve true one-to-one matching by utilizing bitmaps/tables and otherdata structures.

Additional components of the contact center 102 are shown to include aborder element 124, a Work Force Management (WFM) module 132, areporting module 136, a voice portal 140, an IVR 144, a CustomerRelationship Management (CRM) module 148, a work forecasting module 152,and a graph database 160. Each of the depicted components may beconnected to one another within the contact center 102 by an internalnetwork 156. In some embodiments, the internal network 156 maycorrespond to a protected LAN or WAN whose security is maintained by anadministrator of the contact center 102. Although each of the componentsof the contact center 102 are shown as being co-located with oneanother, it should be appreciated that such a configuration ofcomponents is not required. To the contrary, some of the contact center102 components may be distributed and connected to one another over thecommunication network 104, but the communications between suchcomponents may be secured with tunneling protocols or a Virtual PrivateNetwork (VPN).

The border element 124, in some embodiments, is designed to maintain asecure separation between the unprotected and untrusted communicationnetwork 104 and the internal network 156. Examples of the border element124 includes, without limitation, a Session Border Controller (SBC), afirewall, a gateway, a router, or the like. The border element 124 maycomprise logic that enables communications between the networks 104, 156even though the networks 104, 156 may utilize different communicationprotocols. Moreover, the border element 124 may comprise securityfeatures that block untrusted or unwanted communication attempts fromthe communication network 104, thereby preventing the internal network156 from security breaches.

The WFM module 132 may be configured to manage the work force of thecontact center 102 (namely the human resources 112). The WFM module 132may comprise functionality that monitors current work item volume,current resource availability/utilization, past work item volume, pastresource availability/utilization, estimate wait times, service levels,and other objectives to determine if the contact center 102 is operatingin accordance with one or more predefined objectives. The WFM module 132may also be configured to adjust or suggested adjustments to staffinglevels based on the monitoring performed thereby. The WFM module 132 mayalso be configured to monitor Service Level Agreements (SLAs) betweenthe contact center 102 and providers of external resources 112 to ensurethat the SLA is being complied with. The WFM module 132 may further beconfigured to monitor schedule adherence, social media activity, and thelike and the WFM module 132 may enable shift bidding, scheduleadjustments, work-at-home agent re-scheduling, and the like. Basically,any aspect of resource management may be executed by the WFM module 132or made available to a contact center administrator or manager forexecution.

The reporting module 136 may be utilized to generate one or more reportsthat indicate performance of the contact center 102. In someembodiments, the reporting module 136 may be configured to pull datafrom the graph database 160 and prepare such data in a human-readableformat. Advantageously, the reporting module 136 may be configured torun one or more reports for predefined data automatically at predefinedintervals. The reporting module 136 may also be enabled to run ad-hocreports based on inputs received from a contact center administrator ormanager. Further still, the reporting module 136 may be configured torun reports in response to a predetermined event or series of eventsoccurring in the contact center 102. As will be described in detailbelow, thanks to the utilization of a graph database 160 in the contactcenter 102, the amount of information available to the reporting module136 is significantly richer than in prior contact center architectures.The graph database 160 can be configured to store information about anyor all components of the contact center 102 and, therefore, many any orall information available to the reporting module 136. Further still,because the information maintained in the graph database 160 is notlimited or structured in a predefined way, the reporting module 136 canbe configured to run reports showing relationships between differentcontact center 102 components. As a non-limiting example, the reportingmodule 136 may be configured to run a report simultaneously showing WFMstatistics (e.g., resource utilization, compliance with SLA agreements,compliance with objectives, etc.) with agent performance statistics(e.g., Key Performance Indicators (KPIs)) with work assignment engineperformance statistics (e.g., decisions per time period, successfulrouting decisions, estimated wait time, etc.).

The voice portal 140 and/or IVR 144 may be configured to provide mediaservices and/or automated customer service processing to work items inthe contact center. In some embodiments, the voice portal 140 mayprovide the media portion needed to complete IVR functions whereas theIVR 144 provides the logic for interacting with a customer. Said anotherway, the IVR 144 and voice portal 140 may work together to provide IVRservices to customers. The IVR 144 may control or operate the voiceportal 140 in accordance with logic contained in the IVR 144.

The CRM module 148 may be configured to manage historical customerinformation, current customer information, information related tointeractions between a customer and a contact center 102, customerpreferences, customer purchase history, customer return history,customer aliases (e.g., in social media networks), and the like. Suchinformation may be stored and maintained in the graph database 160. TheCRM module 148 may be utilized to help the contact center 102 provide amore robust and personalized customer service experience. In someembodiments, the CRM module 148 may provide also retrieve desired CRMinformation from the graph database 160 to enable a resource 112 to moreefficiently process a work item for a returning or known customer. Forinstance, when a work item is received in a contact center 102 and thework item is associated with a customer having historical informationstored as CRM information in the graph database 160, the CRM module 148may retrieve some or all of the CRM information and provide theretrieved information to a resource 112, thereby enabling the resource112 to provide a more personalized service to the customer.

The forecast module 152 may operate in conjunction with the WFM module132. In particular, the WFM module 132 may attempt to schedule resources112 for future shifts in the contact center 102 and the forecast module152 may be used to help forecast work item volume in the contact enterfor the desired shift period. Additionally, the forecast module 152 maybe used to automatically identify future resources availability issues(in the short-term or long-term) and notify the WFM 132, therebyenabling the WFM 132 to schedule more or less resources 112 asnecessary. In some embodiments, the forecast module 152 is capable ofanalyzing prior contact center performance and contact volume inaddition to monitoring current volume to determine if the contact centerwill need more or less resources 112 at a given time.

The graph database 160 may correspond to one or many database systemsthat maintain information related to the contact center 102 in agraph-based format. Contrasted against traditional hierarchicaldatabases, the graph database 160 is a database that uses graphstructures with nodes, edges, and properties to represent and storedata. A graph database 160 may correspond to any storage system thatprovides index-free adjacency, meaning that every element in the graphdatabase 160 contains a direct pointer to its adjacent elements and noindex lookups are necessary. General graph databases that can store anygraph are distinct from specialized graph databases such as triplestoresand network databases. It should be appreciated that any type of graphdatabase current known or yet to be developed can be utilized as thegraph database 160.

Compared with relational databases, the graph database 160 is faster forassociative data sets, and maps more directly to the structure ofobject-oriented applications. The graph database 160 can scale morenaturally to large data sets as it does not typically require expensivejoin operations. As the graph database 160 depends less on a rigidschema, it is more suitable to manage ad hoc and changing data withevolving schemas. As will be discussed herein, the graph database 160 ispowerful in that it can be used to complete graph-like queries, forexample computing the shortest path between two nodes in the graph,which can be highly useful to the WFM module 132, the reporting module136, the forecast module 152, and the like. Other graph-like queries canbe performed over a graph database in a natural way (for example graph'sdiameter computations or community detection).

With reference now to FIG. 2, additional details of a graph database 160used in a contact center 102 will be described in accordance with atleast some embodiments of the present disclosure. The graph database 160may connect to the contact center network 208 (e.g., the internalnetwork 156) via a database interface 204. The database interface 204may provide the mechanism for various contact center 102 components towrite information to the graph database 160 as well as retrieveinformation from the graph database 160. In some embodiments, databaseinterface 204 may define the commands to retrieve information from thegraph database 160 as well as write information to the graph database160.

In some embodiments, the graph database 160 may comprise a plurality ofdata elements (e.g., data instances) in the form of nodes andrelationships for the events, activities, entities, personnel, andcomponents of the contact center 102. Specifically, the graph database160 may comprise a node type definition 212, a node dictionary 216, andnode properties 220. Likewise, the graph database 160 may comprise arelationship type definition 224, a relationship dictionary 228, andrelationship properties 232. The node type definition 212 may compriseinformation that defines nodes within the graph database 160 whereas therelationship type definition 224 may comprise information that definesthe relationships between nodes within the graph database 160. Examplesof data elements that can be represented in the graph database 160 as anode (e.g., may be a defined node type 212) include, without limitation,resources (e.g., human, machine, computational, equipment, etc.), groupsof resources, work items, customer contacts (which are associated withwork items), conferences, resolution, workflow actions, reportingactions, WFM actions, work item forecasting events, routing events,resource and/or work item attributes (e.g., in the form of an attributetree), etc. The node dictionary 216 may comprise a description and/ordefinition of each node in the graph database 160. For instance, if thecontact center 102 comprises nodes for resources, work items, customercontacts, conferences, and contact resolution, then the node dictionary216 may identify those nodes and further provide information fordefining those nodes within the graph database 160.

The node properties 220 may further define the properties that canbelong to a node in the graph database 160. As a non-limiting example,the properties of a resource node may include resource name, resourceIdentifier (if different from name), date of node creation, date of nodemodification, etc.

Similar to the nodes, the relationships may be another data element inthe graph database 160 and may have a defined relationship type thatdefines the nature of the relationship between two nodes, and arelationship dictionary 228 may maintain a list of all relationships aswell as information defining those relationships (as compared to otherrelationships) within the graph database 160. The type of relationshipmay depend upon the nodes being connected by that relationship. Forinstance, a relationship between a resource node and a conference nodemay identify the time the relationship was created, a duration of howlong the relationship lasted, and a value describing the relationshipbetween the resource and conference node (e.g., work assignmentdecision, routing, etc.). The relationship properties 2323 may definethe properties available to each of the relationships in the graphdatabase 160 much like the node properties 220 define the propertiesavailable to nodes in the graph database 160. It should be appreciatedthat the relationship properties 232 and/or node properties 220 maydynamically change as the contact center 102 continues operation and newrelationships between nodes are needed and/or created. Similarly, nodetypes 212 may be dynamically modified (e.g., created, changed, deleted,merged, etc.) as an automated system identifies the need to modify suchnodes within the contact center 102 (e.g., based on utilization,overutilization, or underutilization of nodes/relationships in thecontact center 102).

With reference now to FIG. 3, additional details of a work assignmentengine 120 will be described in accordance with at least someembodiments of the present disclosure. The work assignment engine 120may comprise match maker logic 304 that matches work items from a taskpool 312 with resources from a resource pool 308. In some embodiments,the work assignment engine 120 may consider information from the graphdatabase 160 when making intelligent work assignment decisions. The workassignment engine 120 may also update nodes and/or relationships in thegraph database 160 when work assignment decisions are made to reflectthat a particular work item (or collection of work items) has beenassigned to a particular resource (or collection of resources). In someembodiments, the work assignment decision may be referenced in the graphdatabase 160 as a direct or indirect relationship between a resourcenode and a work item node. As a non-limiting example, the work item nodemay initially be connected to a conference node when the work item iscreated in the contact center. Once the resource is assigned to the workitem, the resource node corresponding to the assigned resource may beconnected to the same conference node to which the work item isconnected, thereby indicating an assignment of the resource to the workitem. The relationship between the resource and the conference node mayindicate when the relationship was created (e.g., when the workassignment decision was made) as well as how long the relationshiplasted (e.g., how long the resource took to process the work item). Thisinformation may then be preserved in the graph database 160 such that itis made available to the WFM module 132 and/or reporting module 136.

With reference now to FIGS. 4-6B, examples of workflows and other datastructures in the graph database 160 will be described in accordancewith at least some embodiments of the present disclosure. Referringinitially to FIG. 4, an illustrative workflow 400 is depicted asincluding a plurality of nodes 404, 408, 412, 416, 420, each beingconnected to one another via a relationship, either directly orindirectly. The workflow 400 is specifically shown to include a startnode 404, a workflow task node 408, a decision node 412, a decisionexecution node 416, and a result node 420. The start node 404 indicatesa start of the workflow 400. The properties of the start node mayinclude when the workflow 400 was initiated/created as well as whenother nodes in the graph database 160 became connected to the workflow400.

The task node 408 may indicate a first task for the workflow 400. In thedepicted example, the first task corresponds to an IVR task where acustomer/contact is connected with the IVR 144 and/or voice portal 140.Following completion of the IVR task, the workflow 400 continues with adecision node 412 where it is determined whether the customer is seekingaccount information (e.g., bank account information). It is noted thatthe creation of the decision node may not occur until the IVR task iscompleted—that is the determination that the customer is seeking accountinformation may be dependent upon the customer's interactions with theIVR. Accordingly, it should be appreciated that the creation of nodes inthe workflow 400 may be dynamic and based upon customer and/or resourceinputs that occur for the duration of the work item's existence in thecontact center (e.g., until the work item is completely resolved).

Once it is determined that account status is desired, the workflow 400continues at the decision execution node 416. In the depicted example,the decision execution node 416 may correspond to a node where the workassignment engine 120 begins a work assignment process and attempts toassign a resource 112 to a work item corresponding to the receivedcontact. Properties of the decision execution node 416 may include anumber of times that the work assignment decision has been counted, aduration of how long the process has taken to complete, an indication ofwhether a count is currently in process, and other informationidentifying the last relationship(s) between the decision execution node416 and other nodes (e.g., last start time, last duration, last finishtime, etc.).

If the workflow 400 is completed and a work assignment decision is made,the workflow 400 may also comprise a result node 420. The result node420 may become a fully-populated node (e.g., having a complete set ofproperties) if the workflow 400 is successfully completed. If, however,the workflow 400 is not completed, then the result node 420 may be leftfully or partially un-populated.

FIG. 5 depicts the workflow 400 in the context of a broader datastructure stored in the graph database 160. Specifically, the workflow400 is connected to a conference node 508 that is connected to a contactnode 504. As can be appreciated, the contact node 504 may correspond toany node that describes a customer, a group of customers, or any otherentity associated with a work item. The contact node may specificallycorrespond to a call node where the contact type is a call (as opposedto a non-real-time contact like a text, chat, email, fax, etc.) in whichcase the conference node 508 may correspond to a generic node. Inanother configuration, the contact node 504 may correspond to a genericnode and the conference node 508 may identify the contact type (e.g.,call, text, chat, email, fax, video, etc.). The contact node 504 mayalso identify the customer associated with the contact and may becreated immediately upon receiving the contact in the contact center102. The conference node 508 may correspond to the work required to beperformed in connection with the contact (e.g., a work item) and therelationship between the contact node 504 and conference node 508 mayidentify when the relationship was created as well as the length of timethe duration has existed. In some embodiments, the relationship mayfurther identify the type of relationship between the contact node 504and conference node 508. In the example of FIG. 5, the relationship is avoice-type relationship having a creation time at T=2 and a duration offour (4) units of time (e.g., seconds, minutes, hours, days, etc.). Theunits of time for the relationship may be provided in the relationshipproperties 232 of the graph database 160.

The conference node 508 is also connected to the various nodes in theworkflow 400 and each connection to the workflow 400 may have adifferent relationship type and properties. For instance, when theworkflow 400 was created, the conference node 508 may initially beconnected to the workflow task node 408 via a relationship having IVR asthe type, a creation time at T=2, and a duration of one (1) unit oftime. Once the IVR function was completed, the workflow 400 continuesand the conference node 508 is then connected to the decision node 412at time T=3. Thereafter, the conference node 508 is connected to thedecision execution node 416 at time T=3. As the work assignment engine120 tries to find a best resource/agent for the work item, the durationof the relationship between the conference node 508 and decisionexecution node 416 continues to increase and the type of therelationship is set as “waiting” or “wait.”

Until the decision execution node 416 is completed and the work item isassigned to a resource 112. FIGS. 6A and 6B show the two possibleoutcomes (e.g., different configurations of data structures 500 that mayresult depending upon how the work assignment decision gets resolved andwhether the decision is made in a timely manner (e.g., before thecustomer hangs up).

In the example of FIG. 6A, the decision execution node 416 fails and theworkflow 400 is unable to be completed. When the workflow 400 is leftuncompleted, the conference node 508 is connected to a result node 512of a non-resolved type. The relationship between the conference node 508and the result node 512 indicates that at time T=7 the workflow 400failed and resolution, therefore, failed. In this particular example,the work assignment engine 120 may have been unable to find a suitableresource 112 in a timely manner or the work item may have been assignedto a resource 112, but the resource 112 was unable to completeprocessing the work item in a timely manner. In either scenario, theworkflow 400 is left uncompleted and the relationship between theconference node 508 and result node 512 indicates that the work item wasnot resolved.

FIG. 6A also shows a reporting node 604 that is connected to theconference node 508. The reporting node 604 can be used to report someor all information about the workflow 400, the conference node 508, orany other node or relationship connected to the conference node 508. Insome embodiments, the reporting node 604 may be temporarily establishedto retrieve a single instance of data from the data structure 500. Inother embodiments, the reporting node 604 may persistently exist in thedata structure 500 to continue reporting operations on nodes connectedto the conference node 508.

FIG. 6B, as contrasted to FIG. 6A, depicts a situation where theworkflow 400 is completed and the agent request is fulfilled. When thework assignment engine 120 is able to connect the work item to aresource, the result node 512 corresponds to a resolved type. Moreover,because the work item is assigned to a resource by the work assignmentengine 120, the assigned resource (e.g., Agent Ted) and a resource node608 representing the assigned resource is connected to the conferencenode 508. By connecting the resource node 608 to the conference node508, the relationship between the work item and resource is easilyascertainable and can be reported by the reporting node 604. In thedepicted embodiment, the resource is also able to completely resolve theprocessing needs of the work item, which allows the conference node 508to be connected to the resolved result node 512. Also in the depictedembodiment, the times of relationship creation and their duration aremaintained for each of the relationships. This information may becomeuseful to the reporting node 604 when creating reports on the success,or lack thereof, of resolving the work item associated with theconference node 508.

With reference now to FIG. 7, a method of reporting a source of abandonswill be described in accordance with at least some embodiments of thepresent disclosure. The method begins when it is determined that thesource of abandons is desired to be known and a report is required (step704). In response to beginning the reporting process, the methodcontinues by counting the number of abandons in the graph database 160(step 708). This count may correspond to a complete count of allabandons or to a count of abandons over a predetermined period of time.The abandons can be counted with the use of a reporting node 604 thatsearches for all nodes in the graph database 160 having a type offulfillment as well as the number of start nodes 404. The number ofstarts can then be subtracted from the total number of fulfillmentrequests to obtain a count for the number of abandons.

The method continues by counting the total number of start requests (aspreviously counted in step 708) (step 712). It should be appreciatedthat the count of step 712 may be performed before, after, orsimultaneous with step 708. The abandonment percentage can then becalculated by dividing the abandon count determined in step 708 by thetotal count determined in step 712 (step 716). This value can optionallybe multiplied by one hundred (100) to obtain a percentage. Moreover, thesource of abandons can be identified with the use of the reporting node604 that can count the number of fulfillment requests that failed duringthe workflow task node 408, the decision node 412, the decisionexecution node 416, and the result node 420, respectively. Theinformation obtained from the reporting node 604 can identify whatproportions of all abandons occur during various stages of the workflow400. If a higher percentage of abandons occur at a particular stage ofworkflow 400 (e.g., during IVR or during work assignment), then thesource of abandons can be identified, or at least inferred. Forinstance, if a majority (e.g., greater than 40%) of abandons occurduring the IVR node, then it may be inferred that there is a problemwith the IVR script such as a loop, faulty voice-recognition, impropermenu items, etc. As another example, if a majority of abandons occurduring the decision execution node 416 (e.g., during work assignment),then it may be determined that wait time is getting too large forcustomer satisfaction and the WFM module 132 may be implemented todetermined an optimal work force size.

With reference now to FIG. 8, a method of reporting for average speed ofanswer (ASA) will be described in accordance with at least someembodiments of the present disclosure. The method begins when it isdetermined that a report on ASA is desired (step 804). This may occursystematically and on a periodic basis or it may be determined inresponse to a contact center administrator or manager placing a requestfor such a report.

The method continues by determining a start time for each agent welcomeevent in the graph database 160 (step 808). In some embodiments, thestart times may be determined for only agent welcome events thatoccurred within a predetermined period of time. These events maycorrespond to nodes in the graph database 160.

For each workflow 408 having an agent welcome event identified in step808 and having a start time determined therefor, the method continues bydetermining a start time, if any, of an IVR event for the workflow 400(step 812). Thus, if a workflow comprises both an agent welcome eventthat was completed along with an IVR event, then the start times forboth of those events is determined.

Thereafter, the method continues by determining, based on the workflow,the sum of answer duration (step 816). In some embodiments, the sum ofanswer duration corresponds to a summed value of each workflow's agentwelcome time less the start time of the IVR event. Said another way, thesum of all answer durations is determined for the time period inquestion by analyzing workflows and determining the amount of time thatelapsed between the start time of an IVR event and the start time of anagent welcome.

The method continues by counting the number of agent welcome events inthe workflows being analyzed (step 820) and then calculating the ASA forthe workflows (step 824). In some embodiments, the ASA is calculated bydividing the sum of answer duration as determined in step 816 by thetotal number of agent welcomes counted in step 820. It should beappreciated that other metrics may be used to calculate or estimate ASAwithout departing from the scope of the present disclosure.

With reference now to FIG. 9, a method of reporting a source of servicelevel (SL) will be described in accordance with at least someembodiments of the present disclosure. The method begins when it isdetermined that a report is desired for service level or a sourcethereof (step 904). Thereafter, the total number of contacts (e.g.,contact nodes) are counted (step 908). In some embodiments, only thecontact nodes having a creation time within a time period of interestare counted in step 908.

For each contact counted in step 908, the method continues bydetermining an actual wait time for the contacts (step 912). In someembodiments, the wait time for a contact may correspond to a differencebetween the creation time of a work item associated with the contact andthe time when an agent/resource is connected to the work item. In someembodiments, the wait time for a contact may correspond to a differencebetween a time when a contact node is connected to a conference node anda time when an assigned resource is connected to the same conferencenode. In some embodiments, the wait time for a contact may correspond toa duration of a relationship between a contact node and a workassignment decision node 416.

The method continues by determining a service level target for eachcontact counted in step 908 (step 916). The service level target may berepresented as an absolute time value and may be normalized to the timeunits used to calculate the duration in step 912. In some embodiments,the service level target may correspond to a particular target time or arange of target times (e.g., an acceptable range residing above aminimum value and below a maximum value).

The method again continues by counting the number of contacts whose waitduration satisfied the service level target (step 920). The contactswhose wait duration satisfied the service level target may be consideredsuccessful agent interactions, at least from a work assignmentstandpoint.

The service level is then calculated by dividing the successful agentinteractions as identified in step 920 by the total number of contactsdetermined in step 908 (step 924). The service level can then bereported via the reporting module 136.

With reference now to FIG. 10, another example of a data structure 1000in a graph database 160 is shown whereby contact resolution isconsidered successful after two attempts. In other words, the firstattempt at contact resolution was actually unsuccessful in the eventsdepicted in the data structure 1000. However, thanks to the utilizationof a graph database 160, the first failed attempt at resolution andsecond successful attempt at resolution can be logically connected toone another and a reporting module 136 can identify the overall customerinteraction with the contact center 102 as successful.

Specifically, the data structure 1000 shows the contact node 504 asbeing connected to a first conference node 508A and a second conferencenode 508B. The first conference node 508A is shown as being of adifferent type than the second conference node 508B (e.g., voiceconference versus chat conference). However, because both conferencesand separate work items associated therewith were actually initiated bythe same customer (e.g., Mary), the graph database 160 can maintain alogical association with the two interactions and both interactions canbe simultaneously reported on via the reporting node 604.

As shown in the depicted example, the first conference node 508A isconnected to a first resolution node 512A whereas the second conferencenode 508B is connected to a second resolution node 512B. The conferencenodes 508A, 508B may both be connected to the same contact node 504 andthe same reporting node 604. The report that can be generated by thereporting node 604 may indicate that the first conference node wasconnected to the contact node 504 at time T=2 and a voice call wasattempted to be assigned to a resource. Failure to resolve the contactby time T=7 resulted in the first conference node 508A being connectedto the first resolution node 512A; however, at time T=10, the samecustomer, Mary, escalated another contact (e.g., a chat). This chat waseventually assigned to a qualified resource at time T=12, which resultedin the second conference node 508B being connected to the secondresolution node 512B.

With reference now to FIG. 11, a method of optimizing goals by drivingbehavior towards a target as measured by metrics will be described inaccordance with embodiments of the present disclosure. The method isinitiated by establishing one or more goals (step 1104). Examples ofgoals that may be established in a contact center include, withoutlimitation, cost-based objectives, service level objectives, ASAobjectives, abandonment objectives, first call resolution objectives,combinations thereof, or any other objective related to one or more KPIsin a contact center.

For each goal or objective, metric groups are established (step 1108)and a target range is established for each metric group (step 1112). Asan example, first call resolution objectives may comprise metrics groupsrelated to contact attempts, metrics for defining a successful contactresolution, and metrics for identifying when a contact should becounted. The target range may then define the desired metric values forthat particular goal or objective.

For the metrics and targets defined in steps 1108-1116, the datarequired from the graph database 160 to define the metrics and targetsis identified (step 1120). Additionally, the data relationship to flowout of the graph database 160 is defined (step 1124) as is the resetbehavior (step 1128). The reset behavior may correspond to the behaviorof the contact center 102 when the system is reset after a period ofoperation (e.g., resetting the goal at the end of a cycle). Forinstance, if minimizing abandons is the goal, then the metrics that areknown to increase abandons may be to increase estimated wait time orincrease ASA. The converse movement of estimated wait time and ASA maydrive the number of abandons downward. In this example, the resetbehavior may correspond to a behavior or contact center 102configuration that is known to set the contact center 102 back to apredefined estimated wait time or ASA after the end of a day, week, etc.

The metrics, goals, and reset behavior may be defined by anadministrator or manager of the contact center 102 and does notnecessarily have to be defined by the provider of the contact center 102equipment. Accordingly, the contact center operator (e.g., administratoror manager) is allowed to let the contact center 102 run, therebycausing the generation of data, which drives the metrics accordingly(step 1132). The metrics flowing out of the graph database 160 are thenmeasured against the defined targets (step 1136) and the goals can beoptimized by driving the contact center behavior towards the target asmeasured by the metrics (step 1140). Advantageously, since the data usedto drive the contact center 102 is being obtained from the graphdatabase 160, the data can include traditional work assignment data aswell as other contact center data (e.g., WFM data, CRM data, workflowdata, etc.).

With reference now to FIG. 12, the utilization of an attribute tree 1200within a contact center 102 will be described in accordance with atleast some embodiments of the present disclosure. The attribute tree1200 represents a graph database 160 data structure that includes aplurality of data elements describing attributes in the contact centerand can be leveraged by the work assignment engine 120 among othercontact center 102 components. The attribute tree 1200 is used to definepossible and actual resource and/or work item attributes, which aretraditionally referred to as skills or processing requirements. In thepast, the contact center administrator would have to pre-define a newattribute set for every possible or actual attribute combination in thecontact center 102. As can be appreciated, as the number of attributessupported in the contact center 102 expanded, the number of attributesets would expand exponentially. The attribute tree 1200 solves thisscaling problem in a contact center 102 by providing a simple andelegant data structure that allows attributes to be defined in a logicalmanner and allows an infinite combination of attribute sets to bedefined for any resource and/or work item without having to pre-definesuch attribute combinations.

In the depicted embodiment, the attribute tree 1200 corresponds to agraph database data structure where nodes are attributes and therelationships between the nodes correspond to weights needed to traversethe relationship and arrive at another node. Alternatively oradditionally, the weights needed to traverse a node may be maintained asa property of the node rather than a property of a relationship. Anotheradvantage of the attribute tree 1200 is that the work assignment engine120 can utilize proximity-based routing techniques to make a bestpossible match between a resource and work item even when the resourcemay not have the exact attribute combination required to process thework item.

The attribute tree 1200 is shown to include a base node 1204 that isconnected to a first tier of nodes 1208. The first tier of nodes 1208are connected to a second tier of nodes 1212, which are connected to athird tier of nodes 1216, and so on. Although the attribute tree 1200 isonly shown to include three tiers of nodes, it should be appreciatedthat attribute trees of much greater depth having a much larger numberof tiers may be utilized. The simple attribute tree 1200 is depicted forease of understanding the present disclosure.

In the depicted example, the first tier of nodes 1208 may correspond toa highest level of attributes or skills in the contact center 102 (e.g.,language, service, product, etc.). The natures and types of nodes in anytier of the attribute tree 1200 can be defined by the provider of thecontact center 102 or by a user of the contact center (e.g., manager oradministrator). Depending upon the needs and services provided by thecontact center, the types of nodes in the first tier of nodes 1208 willlikely vary from those depicted in FIG. 12.

The second tier of nodes 1212 corresponds to the sub-nodes connected tothe first tier of nodes 1208. The illustrated examples of nodes in thesecond tier of nodes 1212 include English, Spanish, etc. (as sub-nodesto the language node); sales, support, etc. (as sub-nodes to the servicenode); and cable TV, voice, Internet (as sub-nodes to the product node).In this particular example, the contact center 102 using this particularattribute tree 1200 may correspond to a Internet, phone, and cableprovider (e.g., a network provider) and the various categories ofattributes in the second tier of nodes 1212 may define the types ofservices specifically handled within the contact center 102.

The third tier of nodes 1216 corresponds to the sub-nodes connected tothe second tier of nodes 1212. The illustrated examples of nodes in thethird tier of nodes 1216 include US, UK, etc. (as sub-nodes to theEnglish language node); first time, existing, etc. (as sub-nodes to thesales node); troubleshooting, disconnect, accounts and billing, etc. (assub-nodes to the support node); and regular, premium, etc. (as sub-nodesto the cable TV node). It should be appreciated that the other nodes inthe second tier of nodes 1212 may or may not have sub-nodes definedtherefor. Additional details of the attribute tree 1200 will bedescribed in connection with the work assignment engine 120 and itsoperation.

With reference now to FIG. 13, a work assignment method will bedescribed in accordance with embodiments of the present disclosure. Themethod begins at step 1304, for example when a work item is created inthe contact center 102 or when a resource becomes available. Once thework assignment process begins, the priorities for each target group aredetermined by the work assignment engine 120 (step 1308) and thegroup(s) with the highest priorities are selected for supporting thework assignment decision (step 1312). In some embodiments, a contactcenter administrator or manager may define the priorities of targetgroups (e.g., highest priority is profit, second highest priority isabandon rate, third highest priority is ASA, etc.) and the prioritiescan be customizable and changed as needed during operation of thecontact center 102. To continue this particular example, assume thatabandonment or abandon rate is selected as the group with the highestpriority (e.g., minimize abandon rate).

The method continues by selecting the first task most likely to impactthe selected highest priority group (e.g., tasks likely to causeabandonment) (step 1316) as well as the tasks most likely to improveabandonment (step 1320). In this example, adding more resources to thepool of available resources (e.g., bringing in external resources) mayhelp to improve abandonment whereas re-assigning resources to othertasks may cause abandonment. Depending upon the current state of thecontact center, the work assignment engine 120 will implement the tasksidentified in steps 1316 and 1320 to drive the contact center behaviortoward the desired goal for the highest priority group (step 1324). Asmentioned above, the work assignment engine 120 can attempt to satisfythe abandonment goals by using the attribute tree 1200 during workassignment decisions. If abandons are directly related to estimated waittime, then the work assignment engine 120 may loosen its matching logicto allow greater traversal of the attribute tree 1200 during a workassignment decision. In other words, the work assignment engine 120 maynot require a perfect match between a work item processing requirement(as defined by attributes in the attribute tree 1200) and a resource'sskills (as defined by attributes in the attribute tree 1200). Instead, a“good enough” agent can be selected based on the agent's proximity tothe required attributes in the attribute tree 1200.

With reference now to FIGS. 14A and 14B a work assignment method forsimultaneously satisfying two or more goals will be described inaccordance with at least some embodiments of the present disclosure. Thegoals trying to be satisfied in this particular method may or may not becompatible (e.g., driven to an optimal value by the movement of metricsin the same direction). One example of incompatible goals may includemaximizing profits and maximizing customer satisfaction. Another exampleof incompatible goals may include obtaining a target service level andobtaining a target abandon rate. While these goals may be compatible, itis more likely than not that satisfaction of one goal (e.g., servicelevel) may negatively impact satisfaction of the other goal (e.g.,abandon rate). The method begins when the work assignment engine 120 isengaged (step 1404) and work items begin flowing into the contactcenter. Prior to initiating the work assignment engine 120, the targetsor target ranges for the two or more goals may be identified andprovided to the work assignment engine 120 (step 1408).

The work assignment engine 120 uses the targets defined for the two ormore goals to guide its work assignment decisions and the attribute tree1200 can be used to match work items with resources (step 1412). Inparticular, the work assignment engine 120 is allowed to check allpossible assignment decisions for a work item and/or resource against ascoring function to drive the two or more goals (e.g., service level andabandon rate) simultaneously toward a desired range (step 1416). Becausethe work assignment engine 120 is aware of the multiple goals and hasthe ability to traverse the attribute tree 1200 to make softer workassignment decisions (e.g., decisions that are not limited to a definedset of attribute combinations), the work assignment engine 120 isallowed to make the proper trade-offs among different groups based onthe user-specified priorities of the goals (step 1420).

As depicted in FIG. 14B, one of the goals may be represented on one axisof a viewable graph and the other goal may be represented on anotheraxis of the graph. The matrix created thereby may correspond to contactcenter states where the center square in the matrix represents a statewhere both goals are being satisfied (e.g., metrics are within targetranges for both goals). The work assignment engine 120 may be configuredto make work assignment decisions such that if the contact center 102 isnot in the targeted center square, then behavior of the contact center102 is adjusted to drive the behavior toward the targeted center squarewhere service level is not too high or too low and abandon rate is nottoo high or too low. Specifically, if service levels are too high, thenthe work assignment engine 120 can try to reduce staffing, therebybringing the service level back within the target range. Likewise, ifabandon rate is getting too high, then the work assignment engine 120may add more resources to the pool of available resources or the workassignment engine 120 may loosen its restrictions on work assignmentrequirements (e.g., allowing a larger traversal of the attribute tree1200 to find a resource match for a work item).

With reference now to FIGS. 15A and 15B additional details of anattribute tree 1500 will be described in accordance with embodiments ofthe present disclosure. The attribute tree 1500 may be similar oridentical to the attribute tree 1200 of FIG. 12. The attribute tree 1500further shows that some or all nodes of the attribute tree 1500 maycomprise weights or traversal values 1504. These weights may provide thework assignment engine 120 with a mechanism for determining whether aparticular resource can be assigned to a particular work item. Forexample, a work item may comprise a language attribute of English:UK. Ifthe work assignment engine 120 determines that no available resourcecomprises exactly the right language requirement that matches the workitem's language attribute, then the work assignment engine 120 may lookfor a best available second option. This search may involve the workassignment engine 120 traversing the attribute tree 1500 up and downnodes until a node is found having an available resource connectedthereto. Continuing the above example, if an available resource has alanguage attribute of English:US, then the work assignment engine may beallowed to assign the work item to the resource by traversing theattribute tree 1500 from the English:UK node to the English node andthen to the English:US node. The traversal value 1504 for moving fromthe English:US to English node may be one point and then the traversalvalue 1504 for moving form the English to the English:UK node may be twopoints. In this example, the work assignment engine will negativelyweight the decision to assign the work item to the resource having theEnglish:US attribute by a total of three points. This may be consideredan allowable, but less than optimal work assignment decision; however,in the face of increasing wait times and risk of abandonment, the workassignment engine 120 may be allowed to make the less than optimal workassignment decision. The traversal values 1504 can be utilized tocontrol how flexible the work assignment engine 120 can be in making itsdecisions.

The attribute tree 1500, therefore, represents a hierarchicalorganization of attributes in the contact center 102 and can be used formatching in a flexible manner. The attribute tree 1500 eliminates theneed for pre-defined attribute sets and allows the naturally definedrelationships to simplify proximity determinations. Moreover, there isno need to group the attributes into sets for matching and reporting.

A single attribute tree 1500 can be defined in the graph database 160and as resources and/or work items are added to the contact center 102,the skill levels or processing requirements for the resources/work itemscan be defined by connecting the nodes of the resource/work item to thenodes in the attribute tree. FIG. 15B shows how an illustrative agent(e.g., agent Ted) has his skill levels defined by having the agent'snode connected to the appropriate nodes in the attribute tree 1500. Ifthe agent has a particular skill, then that agent's node is connected tothe corresponding node in the attribute tree 1500 and a weight can beassigned to the relationship between the agent node and the node in theattribute tree 1500. Likewise, although not shown, the work item orcontact node can be connected to nodes within the attribute tree 1500.This means that the work assignment engine 120 only has to traverse theattribute tree 1500 from the work item to the closest resource toidentify a best or a good enough match for the work item. If multipleresources have the same skills and are connected to the same nodes inthe attribute tree 1500, then the work assignment engine 120 cancontinue traversing the nodes in the graph database 160 to identifyother parameters suitable for making a work assignment decision (e.g.,an idle time (which can be defined by other nodes in the graph database160) for equally qualified agents may be considered in making the workassignment decision).

In the example of FIG. 15B, agent Ted is shown to have a zero weight forhis connections to English:US and premium cable nodes. This may indicatethat Ted is completely proficient at handling these particular aspectsof a contact. However, thanks to proximity matching enabled by theattribute tree 1500, if a work item has an English:UK attribute and isseeking product information for regular cable TV (as opposed to premiumcable TV), agent Ted may still be a viable option to the work assignmentengine 120 since the nodes of the attribute tree 1500 that have to betraversed are not that significant and the traversal values 1504 to getto such nodes are relatively low. If, however, a work item has anattribute of Spanish, the work assignment engine 120 may not be able toassign the work item to agent Ted because the traversal of the attributetree from English to Spanish is not allowed (due to no traversal value1504 at the language node). Other nodes in the first tier of nodes 1208may be traversed, however, as indicated by the traversal values ofservice node and product node.

FIGS. 16A and 16B depicts additional details of data structures in agraph database 160 of a contact center 102. As discussed herein, theutilization of a graph database 160 is flexible and can be modified toaccommodate any number of contact center conditions. The data structureof FIG. 16A shows how contact nodes can be connected to multipledifferent conference nodes and conference nodes of different customerscan be connected to a common resolution node. In the depicted example,the conference nodes that are connected to Mary's contact node may bothbe connected to a not abandoned resolution node. The conference nodethat is connected to Fred's contact node may be connected to anabandoned resolution node. The conference node that is connected toTim's contact center may also be connected to the abandoned resolutionnode. This is useful as the contact center 102 continues to operate andmore contact nodes are created. Specifically, a single reporting nodecan be created and connected to the appropriate nodes in the graphdatabase 160 to generate a report on failed resolutions (e.g., todetermine abandons, source of abandons, etc.).

FIG. 16B shows another possible representation in a graph database 160of the same scenario depicted in FIG. 16A, except that the graphdatabase 160 does not have specific abandon and not abandoned resolutionnodes. Instead, all conference nodes are connected to a common resultnode and the relationships between the conference nodes and the commonresult node show whether the result was abandonment or not. In otherwords, it should be appreciated that embodiments of the presentdisclosure are not limited to the particular graph databaseconfigurations depicted and described herein. To the contrary,embodiments of the present disclosure contemplate any configuration ofgraph database nodes and/or relationships to describe the operation of acontact center. Moreover, the graph database can be expanded to includean attribute tree and other data structures that support operations ofother contact center components. By incorporating these data structuresinto a common database and data schema, the operations of the contactcenter 102 are vastly improved as compared to the prior art and thepreviously incompatible components can operate in a seamless manner.

In the foregoing description, for the purposes of illustration, methodswere described in a particular order. It should be appreciated that inalternate embodiments, the methods may be performed in a different orderthan that described. It should also be appreciated that the methodsdescribed above may be performed by hardware components or may beembodied in sequences of machine-executable instructions, which may beused to cause a machine, such as a general-purpose or special-purposeprocessor (GPU or CPU) or logic circuits programmed with theinstructions to perform the methods (FPGA). These machine-executableinstructions may be stored on one or more machine readable mediums, suchas CD-ROMs or other type of optical disks, floppy diskettes, ROMs, RAMs,EPROMs, EEPROMs, magnetic or optical cards, flash memory, or other typesof machine-readable mediums suitable for storing electronicinstructions. Alternatively, the methods may be performed by acombination of hardware and software.

Specific details were given in the description to provide a thoroughunderstanding of the embodiments. However, it will be understood by oneof ordinary skill in the art that the embodiments may be practicedwithout these specific details. For example, circuits may be shown inblock diagrams in order not to obscure the embodiments in unnecessarydetail. In other instances, well-known circuits, processes, algorithms,structures, and techniques may be shown without unnecessary detail inorder to avoid obscuring the embodiments.

Also, it is noted that the embodiments were described as a process whichis depicted as a flowchart, a flow diagram, a data flow diagram, astructure diagram, or a block diagram. Although a flowchart may describethe operations as a sequential process, many of the operations can beperformed in parallel or concurrently. In addition, the order of theoperations may be re-arranged. A process is terminated when itsoperations are completed, but could have additional steps not includedin the figure. A process may correspond to a method, a function, aprocedure, a subroutine, a subprogram, etc. When a process correspondsto a function, its termination corresponds to a return of the functionto the calling function or the main function.

Furthermore, embodiments may be implemented by hardware, software,firmware, middleware, microcode, hardware description languages, or anycombination thereof. When implemented in software, firmware, middlewareor microcode, the program code or code segments to perform the necessarytasks may be stored in a machine readable medium such as storage medium.A processor(s) may perform the necessary tasks. A code segment mayrepresent a procedure, a function, a subprogram, a program, a routine, asubroutine, a module, a software package, a class, or any combination ofinstructions, data structures, or program statements. A code segment maybe coupled to another code segment or a hardware circuit by passingand/or receiving information, data, arguments, parameters, or memorycontents. Information, arguments, parameters, data, etc. may be passed,forwarded, or transmitted via any suitable means including memorysharing, message passing, token passing, network transmission, etc.

While illustrative embodiments of the disclosure have been described indetail herein, it is to be understood that the inventive concepts may beotherwise variously embodied and employed, and that the appended claimsare intended to be construed to include such variations, except aslimited by the prior art.

What is claimed is:
 1. A method, comprising: maintaining, by a contactcenter, a model of the contact center, the model of the contact centercomprising a plurality of data elements of a graph database, the graphdatabase storing the plurality of data elements without a fixed schema,the plurality of data elements including a plurality of nodes, each nodehaving one or more attributes defining at least one relationship with atleast one other node of the plurality of nodes, and wherein each noderepresents at least one of a work item of the contact center, a contactof the contact center, a resource of the contact center, a conference inthe contact center, or an event of the contact center; receiving acontact in the contact center; creating a contact node in the graphdatabase that is representative of the contact; connecting the contactnode to a conference node and a work item node in the graph database,the conference node being representative of the contact's interactionwith the contact center and the work item node being representative of awork item to be processed by the contact center in connection withresolving the contact; identifying one or more processing requirementsassociated with the work item; using a work assignment engine to searchthe graph database for one or more nodes representing resources thatpossess or nearly possess an attribute that satisfied the one or moreprocessing requirements associated with the work item; selecting a firstresource for assignment to the work item based on searching the graphdatabase; and creating one or more attributes defining a relationship inthe graph database that connects the conference node to a noderepresenting the first resource, thereby signifying that the firstresource has been assigned to the work item.
 2. The method of claim 1,further comprising: allowing the work assignment engine to traversenodes of an attribute tree maintained in the graph database to make aproximity-based work assignment decision for the work item.
 3. Themethod of claim 2, wherein the first resource does not possess everyattribute required to satisfy the one or more processing requirements.4. The method of claim 3, wherein the first resource is connected to afirst node in the attribute tree, wherein the contact node is connectedto a second node in the attribute tree that is different from the firstnode, and wherein at least one relationship either directly orindirectly connects the first node with the second node.
 5. The methodof claim 4, wherein the work assignment engine identifies costsassociated with assigning the work item to the first resource bytraversing the nodes of the attribute tree from the first node to thesecond node and summing traversal values associated with traversing thenodes of the attribute tree.
 6. The method of claim 1, wherein therelationship that connects the conference node to the node representingthe first resource comprises a property identifying when the firstresource is assigned to the work item.
 7. The method of claim 6, whereinthe relationship that connects the conference node to the noderepresenting the first resource further comprises a property identifyinghow long the first resource takes to process the work item.
 8. Themethod of claim 1, wherein the work assignment engine writes informationto the graph database reflecting that the first resource has beenassigned to the work item.
 9. A contact center, comprising: a processor;and a memory coupled with and readable by the processor and storingtherein a set of instructions which, when executed by the processor,cause the processor to assign work items in the contact center by:maintaining a model of the contact center, the model of the contactcenter comprising a plurality of data elements of a graph database, thegraph database storing the plurality of data elements without a fixedschema, the plurality of data elements including a plurality of nodes,each node having one or more attributes defining at least onerelationship with at least one other node of the plurality of nodes, andwherein each node represents at least one of a work item of the contactcenter, a contact of the contact center, a resource of the contactcenter, a conference in the contact center, or an event of the contactcenter; receiving a contact in the contact center; creating a contactnode in the graph database that is representative of the contact;connecting the contact node to a conference node and a work item node inthe graph database, the conference node being representative of thecontact's interaction with the contact center and the work item nodebeing representative of a work item to be processed by the contactcenter in connection with resolving the contact; identifying one or moreprocessing requirements associated with the work item; using a workassignment engine to search the graph database for one or more nodesrepresenting resources that possess or nearly possess an attribute thatsatisfied the one or more processing requirements associated with thework item; selecting a first resource for assignment to the work itembased on searching the graph database; and creating one or moreattributes defining a relationship in the graph database that connectsthe conference node to a node representing the first resource, therebysignifying that the first resource has been assigned to the work item.10. The contact center of claim 9, wherein the first node is connecteddirectly to the second node via a first relationship.
 11. The contactcenter of claim 10, wherein the first relationship comprises one or moreproperties that describe when the work assignment engine assigned thework item to the resource.
 12. The contact center of claim 11, whereinthe first relationship further comprises a property that describes anamount of time during which the resource was connected to the work item.13. The contact center of claim 9, wherein the first node is indirectlyconnected to the second node via at least two relationships and at leasta third node of the graph database.
 14. The contact center of claim 13,wherein the third node comprises a conference node to which both thefirst node and the second node are directly connected.
 15. The contactcenter of claim 9, wherein the data storage medium further comprises anattribute tree that is used by the work assignment engine to match thework item with the resource.
 16. The contact center of claim 15, whereinthe attribute tree comprises a plurality of nodes, each of whichdescribe different attributes in the contact center and wherein thesecond node associated with the resource is connected to at least onenode in the attribute tree to describe attributes of the resource forreference by the work assignment engine.
 17. The contact center of claim15, wherein the attribute tree enables the work assignment engine tomake proximity-based work assignment decisions.
 18. The contact centerof claim 9, wherein the work assignment engine writes information to thegraph database reflecting that the resource has been assigned to thework item.
 19. A non-transitory computer-readable medium comprisingprocessor-executable instruction that, when executed by a processor,perform a method that comprises: maintaining, by a contact center, amodel of the contact center, the model of the contact center comprisinga plurality of data elements of a graph database, the graph databasestoring the plurality of data elements without a fixed schema, theplurality of data elements including a plurality of nodes, each nodehaving one or more attributes defining at least one relationship with atleast one other node of the plurality of nodes, and wherein each noderepresents at least one of a work item of the contact center, a contactof the contact center, a resource of the contact center, a conference inthe contact center, or an event of the contact center; receiving acontact in the contact center; creating a contact node in the graphdatabase that is representative of the contact; connecting the contactnode to a conference node and a work item node in the graph database,the conference node being representative of the contact's interactionwith the contact center and the work item node being representative of awork item to be processed by the contact center in connection withresolving the contact; identifying one or more processing requirementsassociated with the work item; using a work assignment engine to searchthe graph database for one or more nodes representing resources thatpossess or nearly possess an attribute that satisfied the one or moreprocessing requirements associated with the work item; selecting a firstresource for assignment to the work item based on searching the graphdatabase; and creating one or more attributes defining a relationship inthe graph database that connects the conference node to a noderepresenting the first resource, thereby signifying that the firstresource has been assigned to the work item.
 20. The non-transitorycomputer-readable medium of claim 19, wherein the relationship thatconnects the conference node to the node representing the first resourcecomprises a property identifying when the first resource is assigned tothe work item.